From c1fbf654a05ac20b03906695ce340a863b05cec6 Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Mon, 17 May 2021 21:12:09 +0100 Subject: [PATCH] build: Check CI envvars before rev-parse The CI pipeline does not do a full clone, so we cannot use `git rev-parse` to get the short SHA checksum for the current commit. Of course, since nothing's ever easy, we cannot use vcs_tag() with a custom command, so we need to generate our out `demo_conf.h` header straight from a script. --- build-aux/meson/gen-demo-header.py | 21 +++++++++++++++++++++ demos/meson.build | 21 +++++++++------------ 2 files changed, 30 insertions(+), 12 deletions(-) create mode 100755 build-aux/meson/gen-demo-header.py diff --git a/build-aux/meson/gen-demo-header.py b/build-aux/meson/gen-demo-header.py new file mode 100755 index 0000000000..700193a50b --- /dev/null +++ b/build-aux/meson/gen-demo-header.py @@ -0,0 +1,21 @@ +#!/usr/bin/env python3 + +import os +import subprocess +import sys + +profile = sys.argv[1] + +sys.stdout.write("/* This file is auto-generated. Do not edit. */\n") +sys.stdout.write("#pragma once\n") +sys.stdout.write("\n") +sys.stdout.write(f"#define PROFILE \"{profile}\"\n") + +short_sha = os.environ.get('CI_COMMIT_SHORT_SHA') +if short_sha is not None: + sys.stdout.write(f"#define VCS_TAG \"{short_sha}\"\n") +else: + cmd = ["git", "rev-parse", "--short", "HEAD"] + with subprocess.Popen(cmd, stdout=subprocess.PIPE) as p: + short_sha = p.stdout.read().decode('utf-8').rstrip("\n") + sys.stdout.write(f"#define VCS_TAG \"{short_sha}\"\n") diff --git a/demos/meson.build b/demos/meson.build index 79c530f4b7..c66d19308b 100644 --- a/demos/meson.build +++ b/demos/meson.build @@ -1,17 +1,14 @@ -demo_conf = configuration_data() -demo_conf.set_quoted('PROFILE', get_option('profile')) -demo_conf.set_quoted('VCS_TAG', '@VCS_TAG@') +gen_demo_header = find_program('../build-aux/meson/gen-demo-header.py') +demo_profile = get_option('profile') demo_conf_h = declare_dependency( - sources: vcs_tag( - command: [ 'git', 'rev-parse', '--short', 'HEAD' ], - fallback: get_option('profile') != 'default' ? 'devel' : '', - input: configure_file( - output: 'demo_conf.h.in', - configuration: demo_conf - ), - output: 'demo_conf.h' - ) + sources: custom_target('demo-header', + command: [gen_demo_header, demo_profile], + capture: true, + output: 'demo_conf.h', + build_by_default: true, + build_always_stale: true, + ) ) subdir('constraint-editor') -- 2.30.2